﻿using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using Libreria.SIG.Negocio;

public partial class Receta : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        Session["CadenaDeConexion"] = ConfigurationManager.ConnectionStrings["SIG"].ConnectionString;
    }
    protected void LinkButtonAddNew_Click(object sender, EventArgs e)
    {
        FormViewReceta.ChangeMode(FormViewMode.Insert);
        FormViewReceta.Visible = true;
    }
    protected void InsertCancelButton_Click(object sender, EventArgs e)
    {
        limpiarFormulario();
    }
    private void limpiarFormulario()
    {
        FormViewReceta.Controls.Clear();
        FormViewReceta.Visible = false;

        FormViewIngredientesDeReceta.Controls.Clear();
        FormViewIngredientesDeReceta.Visible = false;
        
        GridViewRecetas.SelectedIndex = -1;
        GridViewRecetas.DataBind();
        
        GridViewIngredientesDeReceta.Visible = false;
    }
    protected void FormViewReceta_ItemInserted(object sender, FormViewInsertedEventArgs e)
    {
        limpiarFormulario();
    }

    protected void FormViewReceta_ItemInserting(object sender, FormViewInsertEventArgs e)
    {
        e.Values["TipoReceta"] = ((DropDownList)FormViewReceta.FindControl("DropDownListTipoDeReceta")).SelectedValue;
        e.Values["Foto"] = ConfigurationManager.AppSettings["RutaFotoReceta"];
    }
    
    protected void FormViewReceta_ItemUpdating(object sender, FormViewUpdateEventArgs e)
    {
        e.NewValues["Foto"] = ConfigurationManager.AppSettings["RutaFotoReceta"];
    }

    protected void GridViewRecetas_SelectedIndexChanged(object sender, EventArgs e)
    {
        GridViewIngredientesDeReceta.DataBind();
        GridViewIngredientesDeReceta.Visible = true;

        FormViewReceta.ChangeMode(FormViewMode.ReadOnly);
        FormViewReceta.Visible = true;
    }
    
    protected void FormViewReceta_ItemUpdated(object sender, FormViewUpdatedEventArgs e)
    {
        limpiarFormulario();
    }

    private void cargarArchivo(FileUpload archivo, String nombre)
    {
        if (archivo.PostedFile != null && archivo.PostedFile.ContentLength > 0)
        {
            if (archivo.PostedFile.ContentType.ToLower().EndsWith("image/jpeg") || archivo.PostedFile.ContentType.ToLower().EndsWith("image/png"))
            {
                try
                {
                    if (archivo.PostedFile.ContentLength <= 100000)
                    {
                        String ruta = ConfigurationManager.AppSettings["RutaFotoReceta"];
                        String rutaArchivo = Server.MapPath(ruta) + nombre;
                        System.Drawing.Image foto = System.Drawing.Image.FromStream(archivo.PostedFile.InputStream);
                        Int32 anchoImg = foto.Width;
                        Int32 altoImg = foto.Height;
                        if (anchoImg > altoImg)
                        {
                            Int32 anchoAnt = anchoImg;
                            anchoImg = 200;
                            Double porcentaje = anchoImg * 100 / anchoAnt;
                            altoImg = (Int32)(altoImg * porcentaje / 100);
                        }
                        else
                        {
                            Int32 altoAnt = altoImg;
                            altoImg = 200;
                            Double porcentaje = altoImg * 100 / altoAnt;
                            anchoImg = (Int32)(anchoImg * porcentaje / 100);
                        }
                        foto = foto.GetThumbnailImage(anchoImg, altoImg, null, IntPtr.Zero);
                        if (System.IO.File.Exists(rutaArchivo))
                        {
                            System.IO.File.Delete(rutaArchivo);
                        }
                        foto.Save(rutaArchivo);

                    }
                }
                catch (Exception)
                {
                   
                }
            }
        }
    }
    protected void GridViewRecetas_RowDeleted(object sender, GridViewDeletedEventArgs e)
    {
        limpiarFormulario();
    }

    protected void FormViewIngredientesDeReceta_ItemInserted(object sender, FormViewInsertedEventArgs e)
    {
        FormViewIngredientesDeReceta.Controls.Clear();
        FormViewIngredientesDeReceta.Visible = false;
    }

    protected void DropDownListTipoIngrediente_SelectedIndexChanged(object sender, EventArgs e)
    {
        ((DropDownList)FormViewIngredientesDeReceta.FindControl("DropDownListIngrediente")).Items.Clear();
        ((DropDownList)FormViewIngredientesDeReceta.FindControl("DropDownListIngrediente")).AppendDataBoundItems = true;
        ((DropDownList)FormViewIngredientesDeReceta.FindControl("DropDownListIngrediente")).Items.Add(new ListItem("-- Seleccionar ingrediente --", "0"));
        ((HiddenField)FormViewIngredientesDeReceta.FindControl("HiddenFieldIngrediente")).Value = "0";
        ((HiddenField)FormViewIngredientesDeReceta.FindControl("HiddenFieldTipoDeAsociacion")).Value = ((DropDownList)sender).SelectedValue;
        RecetaNegocio recetaNegocio = new RecetaNegocio();
        ((DropDownList)FormViewIngredientesDeReceta.FindControl("DropDownListTipo")).Items.Clear();
        ((DropDownList)FormViewIngredientesDeReceta.FindControl("DropDownListTipo")).AppendDataBoundItems = true;
        ((DropDownList)FormViewIngredientesDeReceta.FindControl("DropDownListTipo")).Items.Add(new ListItem("-- Seleccionar tipo --", "0"));
        ((DropDownList)FormViewIngredientesDeReceta.FindControl("DropDownListTipo")).DataSource = recetaNegocio.consultarAsociacion(((HiddenField)FormViewIngredientesDeReceta.FindControl("HiddenFieldTipoDeAsociacion")).Value.ToString(), Session["CadenaDeConexion"].ToString());
        ((DropDownList)FormViewIngredientesDeReceta.FindControl("DropDownListTipo")).DataBind();

    }

    protected void DropDownListTipo_SelectedIndexChanged(object sender, EventArgs e)
    {
        RecetaNegocio recetaNegocio = new RecetaNegocio();
        ((DropDownList)FormViewIngredientesDeReceta.FindControl("DropDownListIngrediente")).Items.Clear();
        ((DropDownList)FormViewIngredientesDeReceta.FindControl("DropDownListIngrediente")).AppendDataBoundItems = true;
        ((DropDownList)FormViewIngredientesDeReceta.FindControl("DropDownListIngrediente")).Items.Add(new ListItem("-- Seleccionar ingrediente --", "0"));
        ((DropDownList)FormViewIngredientesDeReceta.FindControl("DropDownListIngrediente")).DataSource = recetaNegocio.consultarIngredienteAsociado(((HiddenField)FormViewIngredientesDeReceta.FindControl("HiddenFieldTipoDeAsociacion")).Value.ToString(), int.Parse(((DropDownList)sender).SelectedValue.ToString()), Session["CadenaDeConexion"].ToString());
        ((DropDownList)FormViewIngredientesDeReceta.FindControl("DropDownListIngrediente")).DataBind();
        ((HiddenField)FormViewIngredientesDeReceta.FindControl("HiddenFieldIngrediente")).Value = "0";
    }

    protected void DropDownListIngrediente_SelectedIndexChanged(object sender, EventArgs e)
    {
        ((HiddenField)FormViewIngredientesDeReceta.FindControl("HiddenFieldIngrediente")).Value = ((DropDownList)sender).SelectedValue;
    }
    
    protected void LinkButtonAddNewIngrediente_Click(object sender, EventArgs e)
    {
        FormViewIngredientesDeReceta.Visible = true;
    }
    
    protected void FormViewIngredientesDeReceta_ItemInserting(object sender, FormViewInsertEventArgs e)
    {
        e.Values["CodigoReceta"] = GridViewRecetas.SelectedValue;

        //e.Values["Ingrediente"] = ((DropDownList)FormViewIngredientesDeReceta.FindControl("DropDownListIngredientes")).SelectedValue;
    }
    protected void InsertButton_Click(object sender, EventArgs e)
    {
        FormViewReceta.ChangeMode(FormViewMode.Edit);
    }
    protected void ObjectDataSourceRecetaDetalle_Inserted(object sender, ObjectDataSourceStatusEventArgs e)
    {
        if (e.ReturnValue != null)
        {
            // las carga de la imagen o fotografia de la receta se independizo de la creacion de la misma
            // cargarArchivo((FileUpload)FormViewReceta.FindControl("FileUploadFoto"), e.ReturnValue.ToString());
        }
    }
    protected void ObjectDataSourceRecetaDetalle_Updated(object sender, ObjectDataSourceStatusEventArgs e)
    {
        // las carga de la imagen o fotografia de la receta se independizo de la creacion de la misma
        // cargarArchivo((FileUpload)FormViewReceta.FindControl("FileUploadFoto"), e.ReturnValue.ToString());
    }
    protected void ObjectDataSourceRecetas_Deleted(object sender, ObjectDataSourceStatusEventArgs e)
    {
        String ruta = ConfigurationManager.AppSettings["RutaFotoReceta"];
        String rutaArchivo = Server.MapPath(ruta) + @"\" + e.ReturnValue.ToString();
        System.IO.File.Delete(rutaArchivo);
    }



    protected void GridViewIngredientesDeReceta_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowIndex >= 0)
        {
            RecetaNegocio recetaNegocio = new RecetaNegocio();

            DropDownList DropDownListCodigoAsociado = ((DropDownList)e.Row.FindControl("DropDownListCodigoAsociado"));
            DropDownListCodigoAsociado.DataSource = recetaNegocio.consultarIngredienteAsociado(((HiddenField)e.Row.FindControl("HiddenFieldTipoDeAsociacion")).Value.ToString(), 0, Session["CadenaDeConexion"].ToString());
            DropDownListCodigoAsociado.DataBind();
            DropDownListCodigoAsociado.SelectedValue = ((HiddenField)e.Row.FindControl("HiddenFieldCodigoAsociado")).Value.ToString();

            Label LabelUnidadMedida = ((Label)e.Row.FindControl("LabelUnidadMedida"));
            LabelUnidadMedida.Text = recetaNegocio.consultarUnidadMedidaDeIngredienteAsociado(
                    ((HiddenField)e.Row.FindControl("HiddenFieldTipoDeAsociacion")).Value.ToString(),
                    int.Parse(((HiddenField)e.Row.FindControl("HiddenFieldCodigoAsociado")).Value.ToString()), 
                    Session["CadenaDeConexion"].ToString());
            

        }
    }

}
